package comits.business.tiers.dao;

import java.util.List;

import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.context.internal.ManagedSessionContext;
import comits.business.tiers.metiers.Frontiere;
import comits.business.tiers.metiers.HistoriqueVente;
import comits.business.tiers.metiers.ProduitStocke;
import comits.business.tiers.orm.hibernate.HibernateSession;


public class FrontiereDAOImpl implements FrontiereDAO{
	
	public List<Frontiere> recupereFrontiere(String classe) {
		//Exécution de la requète et recupération dans une arraylist 
		//SelectFrontiere
		
				
		SQLQuery sql = HibernateSession.currentSession()
		.createSQLQuery(PropertiesConfig.Get("SelectFrontiere"))
		.addEntity(Frontiere.class);
		
		//SQLQuery sql = HibernateSession.currentSession().
		//createSQLQuery("Select * From frontiere where Classe = ?")
		//.addEntity(Frontiere.class);
		
		 sql.setString(0, classe);
		 
		 List<Frontiere> listfr = sql.list();
		//List<Frontiere> list = sql.list();
		ManagedSessionContext.unbind(HibernateSession.getSessionFactory());
		return listfr;
		
	}
	
	public Frontiere trouverT(String classe){
		//utilisation de la session hibernate
		//exécution de la requète et recupération dans une arraylist 
		SQLQuery sql = HibernateSession.currentSession()
		.createSQLQuery(PropertiesConfig.Get("SelectTauxService"))
		.addEntity(Frontiere.class);
		
		//SQLQuery sql = HibernateSession.currentSession().
		//createSQLQuery("Select* From frontiere where Classe = ?").
		//addEntity(Frontiere.class);
		
		sql.setString(0,classe);

		Frontiere F=(Frontiere) sql.uniqueResult();
		ManagedSessionContext.unbind(HibernateSession.getSessionFactory());
		 HibernateSession.closeSession();
		 HibernateSession.currentSession().flush();
		 HibernateSession.currentSession().clear();
		
		// Affichage des résultats de la requète
		System.out.println(F.getTauxService() );
		
		return F;	
	
	}
	
	public void ModifierFrontiereA(int A) {

        Transaction tc = HibernateSession.currentSession().beginTransaction() ;
		
        SQLQuery sql1 =  HibernateSession.currentSession()
        .createSQLQuery(PropertiesConfig.Get("ModifFrontiereA"));
		
		 sql1.setInteger(0, A);

		int result = sql1.executeUpdate();
		if (result == 1)
			System.out.println("maj modifiee");
		tc.commit();
		ManagedSessionContext.unbind(HibernateSession.getSessionFactory());
        
		
	}
	
	public void ModifierFrontiereB(int B) {
		
		
		Transaction tc = HibernateSession.currentSession().beginTransaction() ;
		
        SQLQuery sql2 =  HibernateSession.currentSession()
        .createSQLQuery(PropertiesConfig.Get("ModifFrontiereB"));
		
		 sql2.setInteger(0, B);

		int result = sql2.executeUpdate();
		if (result == 1)
			System.out.println("maj modifiee");
		tc.commit();
		ManagedSessionContext.unbind(HibernateSession.getSessionFactory());
		
		
	}
	
	
	
	
	
}
